package com.zhentao.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 变更类型枚举
 * @author zhentao
 * @date 2024-12-19
 */
@Getter
@AllArgsConstructor
public enum ChangeTypeEnum {
    
    /**
     * 创建操作
     */
    CREATE("CREATE", "创建", "新增记录"),
    
    /**
     * 更新操作
     */
    UPDATE("UPDATE", "更新", "修改记录内容"),
    
    /**
     * 删除操作
     */
    DELETE("DELETE", "删除", "删除记录"),
    
    /**
     * 状态变更
     */
    STATUS("STATUS", "状态变更", "启用/禁用状态变更"),
    
    /**
     * 批量操作
     */
    BATCH("BATCH", "批量操作", "批量创建/更新/删除"),
    
    /**
     * 导入操作
     */
    IMPORT("IMPORT", "导入", "通过文件导入数据"),
    
    /**
     * 回滚操作
     */
    ROLLBACK("ROLLBACK", "回滚", "回滚到历史版本");
    
    private final String code;
    private final String name;
    private final String description;
    
    /**
     * 根据代码获取枚举
     */
    public static ChangeTypeEnum getByCode(String code) {
        for (ChangeTypeEnum changeType : values()) {
            if (changeType.getCode().equals(code)) {
                return changeType;
            }
        }
        return null;
    }
    
    /**
     * 是否为有效的变更类型代码
     */
    public static boolean isValidCode(String code) {
        return getByCode(code) != null;
    }
}

